Either

sealed class Either<out L, out R>

Disjoint union. The instance might be either Left or Right.

This type is based on scala.Either.

Parameters

L

Type of Left

R

Type of Right

Functions

Link copied to clipboard
inline fun all(predicate: (R) -> Boolean): Boolean

Returns the result of applying the predicate to the value if this is Right or true if this is Left.

Link copied to clipboard
inline fun any(predicate: (R) -> Boolean): Boolean

Returns the result of applying the predicate to the value if this is Right or false if this is Left.

Link copied to clipboard
abstract operator fun contains(element: Any): Boolean

Returns true if the element is equal to the value of this Either, or false otherwise.

Link copied to clipboard
inline fun filter(predicate: (R) -> Boolean): Either<L, R>?

Returns the same Right if the predicate is satisfied for the value. Otherwise returns null.

Link copied to clipboard
inline fun <T> filterIsInstance(): Either<L, T>?

Returns the same Right casted to type T if it is T. Otherwise returns null.

Link copied to clipboard
inline fun <T> filterIsInstanceToOption(): Option<Either<L, T>>

Returns Some containing the same Right casted to type T if it is T. Otherwise returns None.

Link copied to clipboard
inline fun filterNot(predicate: (R) -> Boolean): Either<L, R>?

Returns the same Right if the predicate is not satisfied for the value. Otherwise returns null.

Link copied to clipboard
inline fun filterNotToOption(predicate: (R) -> Boolean): Option<Either<L, R>>

Returns Some containing the same Right if the predicate is not satisfied for the value. Otherwise returns None.

Link copied to clipboard
inline fun filterToOption(predicate: (R) -> Boolean): Option<Either<L, R>>

Returns Some containing the same Right if the predicate is satisfied for the value. Otherwise returns None.

Link copied to clipboard
inline fun <T> fold(leftTransform: (L) -> T, rightTransform: (R) -> T): T

Transforms Left with leftTransform or Right with rightTransform.

Link copied to clipboard
inline fun forEach(action: (R) -> Unit)

Runs action if this is a Right. Returns Unit without any action if this is a Left.

Link copied to clipboard
fun get(): R

Gets value of this Right.

Link copied to clipboard
fun getOrNull(): R?

Gets value of this Right or null if this is Left.

Link copied to clipboard
inline fun <T> map(transform: (R) -> T): Either<L, T>

Maps value of this Right using transform.

Link copied to clipboard
inline fun none(predicate: (R) -> Boolean): Boolean

Returns false if the predicate is met by the value if this is Right or true otherwise.

Link copied to clipboard
abstract fun swap(): Either<R, L>

Swaps Left to Right and Right to Left.

Link copied to clipboard
fun toOption(): Option<R>

Returns a Some containing the Right value if it exists, or a None if this is a Left.

Properties

Link copied to clipboard
abstract val isLeft: Boolean

Returns true if this is a Left or false if this is Right.

Link copied to clipboard
abstract val isRight: Boolean

Returns true if this is a Right or false if this is Left.

Link copied to clipboard
val left: LeftProjection<L, R>

Projects Either as Left.

Link copied to clipboard
val right: RightProjection<L, R>

Projects Either as Right.

Inheritors

Link copied to clipboard
Link copied to clipboard

Extensions

Link copied to clipboard
fun <L, R> Either<L, R?>.filterNotNull(): Either<L, R>?

Returns the same Right if its value is not null. Otherwise returns null.

Link copied to clipboard
fun <L, R> Either<L, R?>.filterNotNullToOption(): Option<Either<L, R>>

Returns Some containing the same Right if its value is not null. Otherwise returns None.

Link copied to clipboard
inline fun <L, R> Either<L, R>.filterOrElse(predicate: (R) -> Boolean, zero: () -> L): Either<L, R>

Returns the same Right if the predicate is satisfied for the value, Left(zero) if the predicate is not satisfied for the value, or the same Left if this is Left.

Link copied to clipboard
inline fun <L, R, T> Either<L, R>.flatMap(transform: (R) -> Either<L, T>): Either<L, T>

Maps value of this Right to a new Either using transform.

Link copied to clipboard
inline fun <L, R> Either<L, R>.getOrElse(default: () -> R): R

Gets value of this Right or default value if this is Left.

Link copied to clipboard
fun <L, R> Either<Either<L, R>, R>.joinLeft(): Either<L, R>

Returns this if this is Right. Otherwise returns value of Left.

Link copied to clipboard
fun <L, R> Either<L, Either<L, R>>.joinRight(): Either<L, R>

Returns this if this is Left. Otherwise returns value of Right.

Link copied to clipboard
fun <T> Either<T, T>.merge(): T

Merges Left and Right of the same type to a single value.